package com.example.task.config;

import com.example.task.service.TaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Slf4j
//@Component
public class ScheduleTask {

    @Autowired
    private TaskService taskService;
    
    /**
     * 每5秒执行一次,如果上次没有执行完等上次执行结束立刻执行下一次
     * 每次都是固定的秒数执行如:5,10,15,20,如果当前为57秒只会等到新的一分钟的0秒执行
     */
//    @Scheduled(cron = "0/1 * * * * ?")
    public void schedule1(){
        log.info("ScheduleTask.schedule1 begin");
//        taskService.test5();
        log.info("ScheduleTask.schedule1 end");
    }

    /**
     * 距离上次开始执行5秒后执行下一次，如果上一次还在运行阻塞
     * 一旦启动容器立刻运行不会卡秒数开始第一次
     */
//    @Scheduled(fixedRate = 5000)
    public void schedule2(){
//        log.info("ScheduleTask.schedule2");
    }

    /**
     * 上一次执行完后等待5秒执行下一次
     */
//    @Scheduled(fixedDelay = 5000)
    public void schedule3(){

    }

//    @Scheduled(cron = "0/1 * * * * ?")
    public void schedule4(){
        log.info("ScheduleTask.schedule4");
//        try {
//            Thread.sleep(3000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
    }


//    @Scheduled(cron = "0/1 * * * * ?")
    public void schedule5(){
        log.info("ScheduleTask.schedule5");
//        try {
//            Thread.sleep(3000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
    }
}
